public with sharing virtual class PageControllerBase{
/***
	See http://wiki.developerforce.com/page/Controller_Component_Communication for explanations...
***/
	private ComponentControllerBase ComponentController;
	private Map<String, ComponentControllerBase> ComponentControllerMap;
	
	public virtual ComponentControllerBase getComponentController(){
		return ComponentController;
	}
	
	public virtual Map<String, ComponentControllerBase> getComponentControllerMap(){
		return componentControllerMap;
	}
	
	public virtual void setComponentControllerMap(String key, ComponentControllerBase compController){
		if(componentControllerMap == null){
			componentControllerMap = new Map<String, ComponentControllerBase>();
		}
		
		componentControllerMap.put(key,compController);
	}
	
	public virtual void setComponentController(ComponentControllerBase compController){
		ComponentController = compController;
	}
	
	public PageControllerBase getThis() {
		return this;
	}

}